home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 46 / Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso / -serious- / sound / gui4mod2smp / gui4mod2smp.e < prev    next >
Text File  |  1999-09-06  |  8KB  |  319 lines

  1. /***TAB SIZE=4***************************************************©bLA*****
  2. **************************************************************************
  3.  
  4.     little gui for mod2smp ...
  5.  
  6. *************************************************************************
  7. *************************************************************************/
  8.  
  9. MODULE    'tools/easygui','afc/tooltype',
  10.         'reqtools', 'libraries/reqtools',
  11.         'workbench/startup', 'workbench/workbench'
  12.  
  13. ENUM NONE,ERR_RLIB
  14.  
  15. DEF    tmod[256]:STRING,pmod,
  16.     tsmp[256]:STRING,psmp,
  17.     path[256]:STRING,
  18.     patt=0, start=0, stop=63, volum=100,
  19.     cnot,not=9,note[4]:STRING,
  20.     coct,oct=2,
  21.     crsp,rsmp=2,
  22.     ntsc=0, vbo=0, sus=0,
  23.     dcia=1,ccia,scia=125,
  24.     dvbl=1,cvbl,svbl=6
  25.  
  26. DEF slstar,slstop,slvbl,slcia,
  27.      filereq:PTR TO rtfilerequester,
  28.     t[256]:STRING,ttr=FALSE
  29.  
  30. PROC main() HANDLE
  31.  
  32.   init()
  33.  
  34.   easyguiA('Gui4Mod2Smp',
  35.     [ROWS,
  36.         [COLS,
  37.             [BUTTON, {getMod}, 'mod:'],
  38.             pmod:=[TEXT,tmod,NIL,TRUE,1]
  39.         ],
  40.         [COLS,
  41.             [BUTTON, {getSmp}, 'smp:'],
  42.             psmp:=[TEXT,tsmp,NIL,TRUE,1]
  43.         ],
  44.         [BEVEL,[ROWS,
  45.             [SLIDE,{getPat},'   Pattern:   ',FALSE,0,127,patt ,3,'%3ld'],
  46.             slstar:=[SLIDE,{getSta},' Start pos:   ',FALSE,0,63 ,start,3,'%3ld'],
  47.             slstop:=[SLIDE,{getSto},'  Stop pos:   ',FALSE,0,63 ,stop ,3,'%3ld'],
  48.             [SLIDE,{getVol},'    Volume:   ',FALSE,0,100,volum ,3,'%3ld']
  49.         ]],
  50.         [COLS,
  51.             [CYCLE,{getNot},' Note:',cnot,not,0,0],
  52.             [CYCLE,{getOct},' Ocatve:',coct,oct,0,0]
  53.         ],
  54.         [BEVEL,[COLS,
  55.             [CHECK,{check1},' ntsc:',ntsc,TRUE,0],
  56.             [CHECK,{check2},' vblank only:',vbo,TRUE,0],
  57.             [CHECK,{check3},' sustain:',sus,TRUE,0]
  58.         ]],
  59.         [BEVEL,[ROWS,
  60.             [COLS,
  61.                 [CHECK,{checkVbl},'VBlank speed:',cvbl,FALSE,0,0],
  62.                 slvbl:=[SLIDE,{getVbl},'   ',FALSE,1,27,svbl,3,'%3ld',0,0,dvbl]
  63.             ],
  64.             [COLS,
  65.                 [CHECK,{checkCia},'CIA speed:   ',ccia,FALSE,0,0],
  66.                 slcia:=[SLIDE,{getCia},'   ',FALSE,28,255,scia,3,'%3ld',0,0,dcia]
  67.             ]
  68.         ]],
  69.         [CYCLE,{getRspl},'Resample:',crsp,rsmp,0],
  70.         [BAR],
  71.         [SBUTTON,{go},'gO']
  72.     ] )
  73.  
  74.  
  75.  
  76. EXCEPT DO
  77.  
  78.  SELECT exception
  79.   CASE  NONE
  80.   CASE    ERR_RLIB; WriteF('Needs Reqtool.library V38+\n')
  81.  ENDSELECT
  82.  
  83.   IF reqtoolsbase  THEN CloseLibrary(reqtoolsbase)
  84.   CleanUp(0)
  85.  
  86. ENDPROC
  87.  
  88.  
  89. /****************************************************************©bLA*****
  90. *************************************************************************/
  91. PROC init()
  92.  
  93.   IF (reqtoolsbase:=OpenLibrary('reqtools.library', 38))=NIL THEN Raise(ERR_RLIB)
  94.  
  95.   open_Icon()
  96.  
  97.   cnot := ['C','C#','D','D#','E','F','F#','G','G#','A','A#','B',NIL]
  98.   coct := ['1','2','3',NIL]
  99.   crsp := ['0','1','No',NIL]
  100.  
  101.   IF ttr=FALSE 
  102.      StrCopy(path,'c:mod2smp')
  103.      StrCopy(tmod,'sys:')
  104.      StrCopy(tsmp,'t:')
  105.   ENDIF
  106.  
  107.   StrCopy(note,'A')
  108.  
  109. ENDPROC
  110.  
  111.  
  112. /****************************************************************©bLA*****
  113. *************************************************************************/
  114. PROC open_Icon() HANDLE
  115. DEF    ttype:PTR TO tooltype,s
  116.  
  117.   NEW ttype.tooltype(TRUE)
  118.  
  119.   s:=ttype.get('PATH')
  120.   IF s THEN StrCopy(path,s)
  121.  
  122.   s:=ttype.get('MOD')
  123.   IF s THEN StrCopy(tmod,s)
  124.  
  125.   s:=ttype.get('SMP')
  126.   IF s THEN StrCopy(tsmp,s)
  127.  
  128.   s:=ttype.get('PATTERN')
  129.   IF s THEN patt:=Val(s)
  130.  
  131.   s:=ttype.get('START')
  132.   IF s THEN start:=Val(s)
  133.  
  134.   s:=ttype.get('STOP')
  135.   IF s THEN stop:=Val(s)
  136.  
  137.   s:=ttype.get('VOLUME')
  138.   IF s THEN volum:=Val(s)
  139.  
  140.   ttr:=TRUE
  141.  
  142. EXCEPT DO
  143.   END ttype
  144. ENDPROC
  145.  
  146.  
  147. /****************************************************************©bLA*****
  148. *************************************************************************/
  149. PROC getMod(gh)
  150. DEF     filename[110]:STRING,result
  151.  
  152.    filereq:=RtAllocRequestA(RT_FILEREQ,NIL);
  153.     IF filereq
  154.        filename[0]:=0;
  155.        RtChangeReqAttrA(filereq,[RTFI_DIR,tmod,RTFI_MATCHPAT,'(#?.mod|mod.#?)',NIL])
  156.        result:=RtFileRequestA(filereq, filename, 'Pick a module',
  157.                     [RTFI_DIR,RT_REQPOS,REQPOS_CENTERSCR,NIL]);
  158.        IF result<>0
  159.           StrCopy(tmod,filereq.dir)
  160.           RightStr(t,tmod,1)
  161.           IF StrCmp(t,':',1)=FALSE THEN StrAdd(tmod,'/')
  162.           StrAdd(tmod,filename)
  163.           settext(gh,pmod,tmod)
  164.        ENDIF
  165.        RtFreeRequest(filereq);
  166.    ELSE
  167.       RtEZRequestA('OUT MEM','OH BOY', NIL, NIL, NIL);
  168.    ENDIF
  169.  
  170. ENDPROC
  171.  
  172. /****************************************************************©bLA*****
  173. *************************************************************************/
  174. PROC getSmp(gh)
  175. DEF     filename[110]:STRING,result
  176.  
  177.    filereq:=RtAllocRequestA(RT_FILEREQ,NIL);
  178.     IF filereq
  179.        filename[0]:=0;
  180.        RtChangeReqAttrA(filereq,[RTFI_DIR,tsmp,NIL])
  181.        result:=RtFileRequestA(filereq, filename, 'Pick a Sample',
  182.                     [RTFI_DIR,RT_REQPOS,REQPOS_CENTERSCR,NIL]);
  183.        IF result<>0
  184.           StrCopy(tsmp,filereq.dir)
  185.           RightStr(t,tsmp,1)
  186.           IF StrCmp(t,':',1)=FALSE THEN StrAdd(tsmp,'/')
  187.           StrAdd(tsmp,filename)
  188.           settext(gh,psmp,tsmp)
  189.        ENDIF
  190.        RtFreeRequest(filereq);
  191.    ELSE
  192.       RtEZRequestA('OUT MEM','OH BOY', NIL, NIL, NIL);
  193.    ENDIF
  194. ENDPROC
  195.  
  196. /****************************************************************©bLA*****
  197. *************************************************************************/
  198. PROC getPat(val) IS patt:=val
  199.  
  200. /****************************************************************©bLA*****
  201. *************************************************************************/
  202. PROC getSta(gh,val)
  203.   start:=val
  204.   IF start>stop THEN start:=stop-1
  205.   setslide(gh,slstar,start)
  206. ENDPROC
  207.  
  208. /****************************************************************©bLA*****
  209. *************************************************************************/
  210. PROC getSto(gh,val)
  211.   stop:=val
  212.   IF stop<start THEN stop:=start+1
  213.   setslide(gh,slstop,stop)
  214. ENDPROC
  215.  
  216. /****************************************************************©bLA*****
  217. *************************************************************************/
  218. PROC getVol(val) IS volum:=val
  219.  
  220. /****************************************************************©bLA*****
  221. *************************************************************************/
  222. PROC getNot(val) 
  223. cnot:=val
  224.  
  225.   SELECT val
  226.     CASE  0 ; StrCopy(note,'C')
  227.     CASE  1 ; StrCopy(note,'C#')
  228.     CASE  2 ; StrCopy(note,'D')
  229.     CASE  3 ; StrCopy(note,'D#')
  230.     CASE  4 ; StrCopy(note,'E')
  231.     CASE  5 ; StrCopy(note,'F')
  232.     CASE  6 ; StrCopy(note,'F#')
  233.     CASE  7 ; StrCopy(note,'G')
  234.     CASE  8 ; StrCopy(note,'G#')
  235.     CASE  9 ; StrCopy(note,'A')
  236.     CASE 10 ; StrCopy(note,'A#')
  237.     CASE 11 ; StrCopy(note,'B')
  238.   ENDSELECT
  239.  
  240. ENDPROC
  241.  
  242. PROC getOct(val) IS coct:=val
  243.  
  244. /****************************************************************©bLA*****
  245. *************************************************************************/
  246. PROC check1(val) IS IF val THEN ntsc:=TRUE ELSE ntsc:=FALSE
  247. PROC check2(val) IS IF val THEN vbo:=TRUE ELSE vbo:=FALSE
  248. PROC check3(val) IS IF val THEN sus:=TRUE ELSE sus:=FALSE
  249.  
  250. /****************************************************************©bLA*****
  251. *************************************************************************/
  252. PROC getVbl(val) IS svbl:=val
  253. PROC getCia(val) IS scia:=val
  254.  
  255. PROC checkVbl(gh,val)
  256.   dvbl:=dvbl=FALSE
  257.   setdisabled(gh,slvbl,dvbl)
  258. ENDPROC
  259.  
  260. PROC checkCia(gh,val)
  261.   dcia:=dcia=FALSE
  262.   setdisabled(gh,slcia,dcia)
  263. ENDPROC
  264.  
  265.  
  266. /****************************************************************©bLA*****
  267. *************************************************************************/
  268. PROC getRspl(val) IS rsmp:=val
  269.  
  270.  
  271. /****************************************************************©bLA*****
  272. *************************************************************************/
  273. PROC go()
  274. DEF    cmd[1024]:STRING, d[8]:STRING
  275.  
  276.  StrCopy(cmd,path) ; StrAdd(cmd,' "')
  277.  StrAdd(cmd,tmod)  ; StrAdd(cmd,'" "')
  278.  StrAdd(cmd,tsmp)  ; StrAdd(cmd,'" ')
  279.  
  280.  StringF(d,'\d',patt) ;  StrAdd(cmd,d) ; StrAdd(cmd,' ')
  281.  StringF(d,'\d',start) ; StrAdd(cmd,d) ; StrAdd(cmd,' ')
  282.  StringF(d,'\d',stop) ;  StrAdd(cmd,d) ; StrAdd(cmd,' ')
  283.  StringF(d,'\d',volum) ; StrAdd(cmd,d) ; StrAdd(cmd,' ')
  284.  
  285.  StrAdd(cmd,note)
  286.  StringF(d,'\d',oct+1) ; StrAdd(cmd,d) ; StrAdd(cmd,' ')
  287.  
  288.  IF ntsc THEN StrAdd(cmd,' -n')
  289.  IF vbo THEN StrAdd(cmd,' -v')
  290.  IF sus THEN StrAdd(cmd,' -s')
  291.  
  292.  IF dvbl=0 
  293.     StrAdd(cmd,' -f')
  294.     StringF(d,'\d',svbl)
  295.     StrAdd(cmd,d)
  296.  ENDIF
  297.  
  298.  IF dcia=0
  299.     StrAdd(cmd,' -c')
  300.     StringF(d,'\d',scia)
  301.     StrAdd(cmd,d)
  302.  ENDIF
  303.  
  304.  IF rsmp<>2
  305.     StrAdd(cmd,' -r')
  306.     StringF(d,'\d',rsmp)
  307.     StrAdd(cmd,d)
  308.  ENDIF
  309.  
  310.  exec(cmd)
  311.  
  312.  DisplayBeep(NIL)
  313.  
  314. ENDPROC
  315.  
  316. PROC exec(arg) IS Execute(arg,0,stdout)
  317.  
  318. CHAR '$VER:Gui2Mod2Smp by bLa$Ter_oNe!  0.1  (26/08/1999)',0
  319.